package org.visionlibrary.image.geomtric.lines.compare.model;

import java.util.List;
import java.util.Map;

import org.visionlibrary.image.geomtric.model.Vector2d;


/**
 * Interfejs wspolny dla wszystkich klas realizujacych porownywanie dwoch zestawow
 * odcinkow.
 */
public interface SegmentCompare {
	/**
	 * Metoda zwraca stopien podobienstwa dwoch zestawow odcinkow. 
	 * 
	 * @param segmentA Pierwsza lista odcinkow.
	 * 
	 * @param segmentB Druga lista odcinkow.
	 * 
	 * @return Stopien podobienstwa wyrazony jako liczba z przedzialu 0 - 1.
	 */
	double compare(List<Vector2d> segmentA, List<Vector2d> segmentB);

	/**
	 * Metoda zwraca stopien podobienstwa dwoch zestawow odcinkow. Pozwala na
	 * zwrocenie wiekszej ilosci danych np.: dla kazdej skladowej algorytmu oraz
	 * wynik koncowy.
	 * 
	 * @param segmentA Pierwsza lista odcinkow.
	 * 
	 * @param segmentB Druga lista odcinkow.
	 * 
	 * @return Mapa zawierajacy skladowe porownania
	 */
	Map<String, Double> compareDetails(List<Vector2d> segmentA,
			List<Vector2d> segmentB);
}
